package demo1;

import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        //不区分大小写
        String string = "Qpqasdfghjasdffghr";
        char[] chars = string.toCharArray(); // 将字符串转为数组
        int[] nums = new int[26];           //建立数组存储每个字符的个数
        ArrayList<Character> arrayList = new ArrayList<>(); //定义一个ArraList类  用来存字符


        //把每个字符存入到ArrayList中
        for (int i = 0; i < string.length(); i++) {
            arrayList.add(chars[i]);
        }

        // 判断每个字符出现的次数  并存入nums数组中
        for (int i = 0; i < arrayList.size(); i++) {
            if (arrayList.get(i) >= 'a' && arrayList.get(i) <= 'z'){
                nums[arrayList.get(i) - 96]++;
            } else {
                nums[arrayList.get(i) - 65]++;
            }
        }

        //将nums数组大于1的直接用remove删除掉
        for (int i = 0, j = 0; i < string.length(); i++) {
            //重点: arrayList.get() 删除完后 下一次又是从上一次的位置进行判断删除  所以j要定义好
            if (arrayList.get(j) >= 'a' && arrayList.get(j) <= 'z'){
                if (nums[arrayList.get(j) - 96] > 1) {
                    arrayList.remove(j);
                    continue;
                }
            } else if (arrayList.get(j) >= 'A' && arrayList.get(j) <= 'Z') {
                if (nums[arrayList.get(j)-65] > 1) {
                    arrayList.remove(j);
                    continue;
                }
            }
            j++;  //重点
            }


        //最后输出
        System.out.println(arrayList.toString());

    }
}
